package com.gitee.helioz.openai.api.dto.files;

import com.gitee.helioz.openai.common.util.http.HttpFilePart;
import lombok.Data;

/**
 * 〈文档上传响应〉
 *
 * @author <a href="https://gitee.com/helioz">Morning Starr</a>
 */
@Data
public class FileUploadRequest {
    /**
     * JSON Lines文件
     * <pre>必填</pre>
     */
    private HttpFilePart file;
    /**
     * 用于表示文件的用途。可以设置以下几个值：
     * <pre>
     * "fine-tune"：用于Fine-tuning目的上传文件。文件中的每一行都应该是一个JSON记录，包含了 "prompt" 和 "completion" 两个字段，用于表示训练示例。
     * "data"：用于上传普通数据文件，如文本文件、图片文件、音频文件等。
     * "image"：用于上传图片文件。
     * "audio"：用于上传音频文件。
     * "video"：用于上传视频文件。</pre>
     * 不同的"purpose" 值对应了不同的文件类型和格式要求，因此在使用Files API时，需要根据具体的文件类型和上传目的设置合适的"purpose" 值。
     * <pre>
     * 如果设置参数"purpose"为"fine-tune"，则上传的JSONL文件应符合以下格式要求：
     * 文件中的每一行都应该是一个JSON记录。
     * 每个JSON记录应包含 "prompt" 和 "completion" 两个字段，用于表示训练示例。
     * "prompt" 字段用于设置输入文本，即生成模型的提示。
     * "completion" 字段用于设置期望的生成结果，作为模型的生成目标。
     * 示例如下：
     * {"prompt": "Once upon a time,", "completion": "there was a little girl who lived in a cottage in the woods."}
     * {"prompt": "In a galaxy far, far away,", "completion": "a young Jedi named Luke Skywalker embarked on an epic adventure."}
     * {"prompt": "It was a dark and stormy night,", "completion": "and the howling wind sent chills down their spines."}
     * 每一行都是一个JSON记录，包含了 "prompt" 和 "completion" 两个字段，分别设置了输入文本和期望的生成结果。
     * 这样的JSONL文件可以作为训练示例用于Fine-tuning目的上传到OpenAI的Files API中。</pre>
     * <pre>必填</pre>
     */
    private String purpose;

}
